package upe.mestrado.experimentos.taxamutacao;

import java.io.FileNotFoundException;

import upe.mestrado.arquivos.Logger;
import upe.mestrado.base.AlgoritmoGenetico;
import upe.mestrado.base.Inicializacao;
import upe.mestrado.base.OperadorCruzamento;
import upe.mestrado.base.OperadorMutacao;
import upe.mestrado.base.OperadorSelecao;
import upe.mestrado.base.Problema;
import upe.mestrado.inicializacao.InicializacaoNormalizada;
import upe.mestrado.operadores.cruzamento.CruzamentoDoisPontos;
import upe.mestrado.operadores.mutacao.MutacaoGaussiana;
import upe.mestrado.operadores.selecao.SelecaoElitista;
import upe.mestrado.operadores.selecao.TorneioBinario;
import upe.mestrado.problemas.Rastrigin;

public class Experimento2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Inicializacao inicializacao = new InicializacaoNormalizada();
		OperadorCruzamento cruzamento = new CruzamentoDoisPontos();
		OperadorMutacao mutacao = new MutacaoGaussiana();
		OperadorSelecao selecao = new SelecaoElitista();
		OperadorSelecao selecaoPais = new TorneioBinario();
		Problema problema = new Rastrigin();

		Logger logger = new Logger("resultados/taxamutacao/ExperTxMutacao_2.csv", 30, 30);
		
		for(int i=0; i<30; i++){
			AlgoritmoGenetico algoritmo = new AlgoritmoGenetico(30, inicializacao, cruzamento, mutacao, 
					selecaoPais, selecao, (float)0.6, (float)0.1, problema);
			
			algoritmo.execute();
			
			logger.definirValores(i, algoritmo.getValoresPorInteracao());
		}

		try {
			logger.imprimirResultado();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
